#include "ConductorPrueba.h"
#include "Prueba.h"

ConductorPrueba::ConductorPrueba()
{
	manejadorImpresion = new ManejadorImpresionPrueba();
	manejadorSalida = new ManejadorSalidaPrueba();
	estadisticaGlobal = new EstadisticaPrueba();
}

ConductorPrueba::~ConductorPrueba()
{
}

void ConductorPrueba::CorrerPruebas(Puntero<Iterador<Puntero<Prueba>>> pruebas)
{
	estadisticaGlobal->ResetearResultados();
	manejadorSalida->CrearDirectorio("Pruebas");

	for (pruebas->Reiniciar(); pruebas->HayElemento(); pruebas->Avanzar())
		pruebas->ElementoActual()->CorrerPrueba(this);

	manejadorSalida->SetSalidaArchivo("Resultados Totales.txt");
	manejadorImpresion->ImprimirTotalResultados(estadisticaGlobal);
	manejadorSalida->SetSalidaPantalla();
}

void ConductorPrueba::Verificar(TipoRetorno retorno, TipoRetorno retornoEsperado, Cadena comentario)
{
	manejadorImpresion->ImprimirResultado(retorno, retornoEsperado, comentario);
	estadisticaGlobal->ActualizarEstadisticas(retorno, retornoEsperado);
}

const Puntero<ManejadorImpresionPrueba>& ConductorPrueba::GetManejadorImpresion() const
{
	return manejadorImpresion;
}

const Puntero<ManejadorSalidaPrueba>& ConductorPrueba::GetManejadorSalida() const
{
	return manejadorSalida;
}